<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="http://egonw.github.io/blog/feed/by_tag/beilstein.xml" rel="self" type="application/atom+xml" /><link href="http://egonw.github.io/blog/" rel="alternate" type="text/html" /><updated>2026-10-06T09:51:02+00:00</updated><id>http://egonw.github.io/blog/feed/by_tag/beilstein.xml</id><title type="html">chem-bla-ics</title><subtitle>Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.</subtitle><author><name>Egon Willighagen</name></author><entry><title type="html">Oscar4 command line utilities</title><link href="http://egonw.github.io/blog/2010/11/18/oscar4-command-line-utilities.html" rel="alternate" type="text/html" title="Oscar4 command line utilities" /><published>2010-11-18T00:00:00+00:00</published><updated>2010-11-18T00:00:00+00:00</updated><id>http://egonw.github.io/blog/2010/11/18/oscar4-command-line-utilities</id><content type="html" xml:base="http://egonw.github.io/blog/2010/11/18/oscar4-command-line-utilities.html"><![CDATA[<p>One goal of my three month project is to take Oscar4 to the community. We want to get it used more, and we need
a larger development community. Oscar4 and the related technologies do a good, sometimes excellent, job, but
have to be maintained, just like any other piece of code. To make using it easier, we are developing new APIs,
as well as two user-oriented applications: <a href="https://chem-bla-ics.linkedchemistry.info/2010/10/21/oscar-text-mining-in-taverna.html">a Taverna 2 plugin <i class="fa-solid fa-recycle fa-xs"></i></a>,
and command line utilities. The <a href="https://chem-bla-ics.linkedchemistry.info/2010/10/28/oscar4-java-api-chemical-name.html">Oscar4 Java API <i class="fa-solid fa-recycle fa-xs"></i></a>
has slightly evolved in the last three weeks, removing some complexity. In this post, I will introduce the command
line utilities.</p>

<h2 id="oscar4">Oscar4</h2>

<p>Most people will be mostly interested into the full Oscar4 program, to extract chemical entities. Oscar3 was
also capable of extracting data (like <a href="https://chem-bla-ics.linkedchemistry.info/2006/09/08/chemical-archeology-oscar3-to.html">NMR spectra <i class="fa-solid fa-recycle fa-xs"></i></a>),
but that is not yet being ported. The OscarCLI program takes input, extracts chemicals, and where possible resolves
them into connection tables (viz. InChI).</p>

<p>To extract chemicals from a line of text (e.g. <em>“This is propane.”</em>, you do:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>java <span class="nt">-cp</span> oscar4-cli-4.0-SNAPSHOT.jar <span class="se">\</span>
  uk.ac.cam.ch.wwmm.oscar.oscarcli.OscarCLI <span class="se">\</span>
  This is propane.
propane: <span class="nv">InChI</span><span class="o">=</span>1/C3H8/c1-3-2/h3H2,1-2H3
</code></pre></div></div>

<p>For larger chunks of texts it is easier to route it via <a href="http://en.wikipedia.org/wiki/Standard_streams">stdin</a>,
for which we can use the <code class="language-plaintext highlighter-rouge">-stdin</code> option:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">echo</span> <span class="s2">"This is propane."</span> | <span class="se">\</span>
  java <span class="nt">-cp</span> oscar4-cli-4.0-SNAPSHOT.jar <span class="se">\</span>
  uk.ac.cam.ch.wwmm.oscar.oscarcli.OscarCLI <span class="se">\</span>
  <span class="nt">-stdin</span>
propane: <span class="nv">InChI</span><span class="o">=</span>1/C3H8/c1-3-2/h3H2,1-2H3
</code></pre></div></div>

<p>That way, we can easily process large plain text files (output omitted):</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">cat </span>largeFile.txt | <span class="se">\</span>
  java <span class="nt">-cp</span> oscar4-cli-4.0-SNAPSHOT.jar <span class="se">\</span>
  uk.ac.cam.ch.wwmm.oscar.oscarcli.OscarCLI <span class="se">\</span>
  <span class="nt">-stdin</span>
</code></pre></div></div>

<p>If you prefer RDF output, for further integration, use the <code class="language-plaintext highlighter-rouge">-output text/turtle</code>:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">cat </span>largeFile.txt | <span class="se">\</span>
  java <span class="nt">-cp</span> oscar4-cli-4.0-SNAPSHOT.jar <span class="se">\</span>
  uk.ac.cam.ch.wwmm.oscar.oscarcli.OscarCLI <span class="se">\</span>
  <span class="nt">-stdin</span> <span class="nt">-output</span> text/turtle
</code></pre></div></div>

<p>This returns RDF using the <a href="http://code.google.com/p/semanticchemistry/">CHEMINF</a> ontology like:</p>

<div class="language-turtle highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">@prefix</span><span class="w"> </span><span class="nn">dc:</span><span class="w">  </span><span class="p">.</span><span class="w">
</span><span class="kd">@prefix</span><span class="w"> </span><span class="nn">rdfs:</span><span class="w">  </span><span class="p">.</span><span class="w">
</span><span class="kd">@prefix</span><span class="w"> </span><span class="nn">ex:</span><span class="w">  </span><span class="p">.</span><span class="w">
</span><span class="kd">@prefix</span><span class="w"> </span><span class="nn">cheminf:</span><span class="w">  </span><span class="p">.</span><span class="w">
</span><span class="kd">@prefix</span><span class="w"> </span><span class="nn">sio:</span><span class="w"> </span><span class="p">.</span><span class="w">

</span><span class="nn">ex:</span><span class="n">entity0
</span><span class="w">  </span><span class="nn">rdfs:</span><span class="n">subClassOf</span><span class="w"> </span><span class="nn">cheminf:</span><span class="n">CHEMINF_000000</span><span class="w"> </span><span class="p">;</span><span class="w">
  </span><span class="nn">dc:</span><span class="n">label</span><span class="w"> </span><span class="s">"propane"</span><span class="w"> </span><span class="p">;</span><span class="w">
  </span><span class="nn">cheminf:</span><span class="n">CHEMINF_000200</span><span class="w"> </span><span class="p">[</span><span class="w">
    </span><span class="k">a</span><span class="w"> </span><span class="nn">cheminf:</span><span class="n">CHEMINF_000113</span><span class="w"> </span><span class="p">;</span><span class="w">
    </span><span class="nn">sio:</span><span class="n">SIO_000300</span><span class="w"> </span><span class="s">"InChI=1/C3H8/c1-3-2/h3H2,1-2H3"</span><span class="w"> </span><span class="p">.</span><span class="w">
  </span><span class="p">]</span><span class="w"> </span><span class="p">.</span><span class="w">
</span></code></pre></div></div>

<p>We can, however, also use <a href="http://jericho.htmlparser.net/docs/index.html">Jericho</a> to extract text from HTML pages, made
available with the <code class="language-plaintext highlighter-rouge">-html</code> option, and pulling in a <a href="http://www.beilstein-journals.org/bjoc/">Beilstein Journal of Organic Chemistry</a>
paper with <a href="http://en.wikipedia.org/wiki/Wget">wget</a>:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>wget <span class="nt">-qO-</span> https://doi.org/10.3762/bjoc.6.122 | <span class="se">\</span>
  java <span class="nt">-cp</span> oscar4-cli-4.0-SNAPSHOT.jar <span class="se">\</span>
  uk.ac.cam.ch.wwmm.oscar.oscarcli.OscarCLI <span class="se">\</span>
  <span class="nt">-stdin</span> <span class="nt">-html</span>
</code></pre></div></div>

<p>This will return 271 chemical entities recognized in the text, matching 48 unique chemical structures.</p>]]></content><author><name>Egon Willighagen</name></author><category term="oscar" /><category term="textmining" /><category term="beilstein" /><category term="inchikey:ATUOYWHBWRKTHZ-UHFFFAOYSA-N" /><summary type="html"><![CDATA[One goal of my three month project is to take Oscar4 to the community. We want to get it used more, and we need a larger development community. Oscar4 and the related technologies do a good, sometimes excellent, job, but have to be maintained, just like any other piece of code. To make using it easier, we are developing new APIs, as well as two user-oriented applications: a Taverna 2 plugin , and command line utilities. The Oscar4 Java API has slightly evolved in the last three weeks, removing some complexity. In this post, I will introduce the command line utilities.]]></summary></entry></feed>